package pns.polaris.filescan.process;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public abstract class AbsFileScanLoad {

    /**
     * 文件后缀前缀分隔符
     */
    private static final String FILE_SUFFIX_DOT = ".";
    /**
     * Jar包文件地址后缀
     */
    private static final String JAR_DIRC_SUFFIX = "/";

    /**
     * 文件后缀
     */
    protected String fileSuffix;

    public AbsFileScanLoad(String fileSuffix) {
        this.fileSuffix = fileSuffix;
    }

    protected final Logger logger = LoggerFactory.getLogger("startup");

    /**
     * 判断文件是否由当前处理器执行
     * @param fileName  文件名
     * @return          应答信息
     */
    public boolean fileJudge(String fileName){
        if(fileName.endsWith(JAR_DIRC_SUFFIX)){
            return false;
        }
        // 获取文件名中的第一个.的位置，做截断，比对后面的后缀部分和预设是否一致
        int dotIndex = fileName.indexOf(FILE_SUFFIX_DOT);
        if(dotIndex>0) {
            return fileName.substring(dotIndex).equals(this.fileSuffix);
        }else {
            return false;
        }
    }

    /**
     * 分析文件（压缩文件）
     * @param targetFile    目标文件
     * @param entry         文件内容
     */
    public abstract void analysisFile(ZipFile targetFile, ZipEntry entry);

    /**
     * 分析文件（非压缩文件）
     * @param file    目标文件
     */
    public abstract void analysisFile(File file);

    /**
     * 最终文件处理
     */
    public abstract void analysisFinally();



}
